<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.5"/>
<title>xilpuf: xilpuf_spartan_ultrascale_plus_example.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
  $(window).load(resizeHeight);
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="HTML_custom.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectlogo"><img alt="Logo" src="xlogo_bg.png"/></td>
  <td style="padding-left: 0.5em;">
   <div id="projectname">xilpuf
   </div>
   <div id="projectbrief">Vitis Drivers API Documentation</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.5 -->
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Overview</span></a></li>
      <li><a href="globals.html"><span>APIs</span></a></li>
      <li><a href="files.html"><span>File&#160;List</span></a></li>
    </ul>
  </div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;"
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('xilpuf__spartan__ultrascale__plus__example_8h.html','');});
</script>
<div id="doc-content">
<div class="header">
  <div class="summary">
<a href="#define-members">Macros</a>  </div>
  <div class="headertitle">
<div class="title">xilpuf_spartan_ultrascale_plus_example.h File Reference</div>  </div>
</div><!--header-->
<div class="contents">
<a name="details" id="details"></a><h2 class="groupheader">Overview</h2>
<div class="textblock"><p>This file contains macros which needs to configured by user for xilpuf_example.cand based on the options selected by user operations will be performed.</p>
<p>This example is supported for spartan ultrascale plus devices.</p>
<pre>
 MODIFICATION HISTORY:</pre><pre> Ver   Who     Date     Changes
 ----- ------  -------- ------------------------------------------------------
 1.0   kpt     08/23/24 First release</pre><pre> </pre><h2>User configurable parameters for PUF </h2>
<p>#define XPUF_RED_KEY "0000000000000000000000000000000000000000000000000000000000000000" Red Key to be encrypted by PUF KEY should be provided in string format.It should be either 32 or 64 characters long as only 128 bit and 256 bit key are supported.</p>
<p>#define XPUF_RED_KEY_LEN (XPUF_RED_KEY_SIZE_256) (or) (XPUF_RED_KEY_SIZE_128) XPUF_RED_KEY_LEN can be configured as one of the two provided options. This configuration should be done on the basis of the length of the red key in bits. Only 128 bit and 256 bit key are supported. By default the length of red key is configured as 256 bit.</p>
<p>#define XPUF_IV "000000000000000000000000" IV should be provided in string format.It should be 24 characters long, valid characters are 0-9,a-f,A-F. Any other character is considered as invalid string.The value mentioned here will be converted to hex buffer.It is used with the AES-GCM cryptographic hardware in order to encrypt red key.</p>
<p>#define XPUF_GENERATE_KEK_N_ID (TRUE) This macro must be configured as TRUE to generate both PUF KEK and PUF ID. In order to generate PUF ID only, it should be configured as FALSE. The default option is set as TRUE to enable encryption of Red Key.</p>
<p>#define XPUF_KEY_GENERATE_OPTION (XPUF_REGISTRATION) (or) (XPUF_REGEN_ON_DEMAND) PUF Key can be generated by PUF registration or PUF on-demand regeneration.The user can configure XPUF_KEY_GENERATE_OPTION as either XPUF_REGISTRATION or XPUF_REGEN_ON_DEMAND to select the mode of PUF operation to generate helper data. It should be configured only when XPUF_GENERATE_KEK_N_ID as TRUE.</p>
<p>#define XPUF_CHASH (0x00000000) CHASH value should be supplied if XPUF_READ_HD_OPTION is configured as XPUF_READ_FROM_RAM.The length of CHASH should be 24 bits This can be obtained by performing PUF registration and writing the helper data on the UART.</p>
<p>#define XPUF_AUX (0x00000000) AUX value should be supplied if XPUF_READ_HD_OPTION is configured as XPUF_READ_FROM_RAM.The length of AUX should be 32 bits This can be obtained by performing PUF registration and writing the helper data on the UART.</p>
<p>#define XPUF_SYN_DATA_ADDRESS (0x00000000) Address of syndrome data should be supplied if XPUF_READ_HD_OPTION is configured as XPUF_READ_FROM_RAM.</p>
<p>#define XPUF_WRITE_PUF_HASH_IN_EFUSE (FALSE) If this option is configured as TRUE then hash of PUF helper data is written into the eFuse.</p>
<p>#define XPUF_GLBL_VAR_FLTR_OPTION (TRUE) It is recommended to always enable this option to ensure entropy. It can be configured as FALSE to disable Global Variation Filter.</p>
<p>#define XPUF_PRGM_HASH_PUF_OR_KEY (FALSE) If this option is configured as TRUE then PRGM_HASH_PUF_OR_KEY bit is programmed and will enforce PUF hash to be compared with programmed hash in PPK2 during boot </p>
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:a6f822848a1e2b64dc248cb92792e96c5"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xilpuf__spartan__ultrascale__plus__example_8h.html#a6f822848a1e2b64dc248cb92792e96c5">XPUF_READ_HASH_PUF_OR_KEY</a>&#160;&#160;&#160;(FALSE)</td></tr>
<tr class="memdesc:a6f822848a1e2b64dc248cb92792e96c5"><td class="mdescLeft">&#160;</td><td class="mdescRight">For reading Secure control eFUSE bits of PUF.  <a href="#a6f822848a1e2b64dc248cb92792e96c5">More...</a><br/></td></tr>
<tr class="separator:a6f822848a1e2b64dc248cb92792e96c5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a94d0604a0d7e4af7bd43aa25d69a6cda"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xilpuf__spartan__ultrascale__plus__example_8h.html#a94d0604a0d7e4af7bd43aa25d69a6cda">XPUF_RED_KEY</a>&#160;&#160;&#160;&quot;0000000000000000000000000000000000000000000000000000000000000000&quot;</td></tr>
<tr class="memdesc:a94d0604a0d7e4af7bd43aa25d69a6cda"><td class="mdescLeft">&#160;</td><td class="mdescRight">Red key that is encrypted using PUF KEK to form a black key.  <a href="#a94d0604a0d7e4af7bd43aa25d69a6cda">More...</a><br/></td></tr>
<tr class="separator:a94d0604a0d7e4af7bd43aa25d69a6cda"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8c62e5450d6fd6c55be85f99ef93e91f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xilpuf__spartan__ultrascale__plus__example_8h.html#a8c62e5450d6fd6c55be85f99ef93e91f">XPUF_RED_KEY_SIZE_128</a>&#160;&#160;&#160;(0U)</td></tr>
<tr class="memdesc:a8c62e5450d6fd6c55be85f99ef93e91f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Keysize 128.  <a href="#a8c62e5450d6fd6c55be85f99ef93e91f">More...</a><br/></td></tr>
<tr class="separator:a8c62e5450d6fd6c55be85f99ef93e91f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aba0d81b251bd7dae61feba4a7aab98f5"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xilpuf__spartan__ultrascale__plus__example_8h.html#aba0d81b251bd7dae61feba4a7aab98f5">XPUF_RED_KEY_SIZE_256</a>&#160;&#160;&#160;(2U)</td></tr>
<tr class="memdesc:aba0d81b251bd7dae61feba4a7aab98f5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Keysize 256.  <a href="#aba0d81b251bd7dae61feba4a7aab98f5">More...</a><br/></td></tr>
<tr class="separator:aba0d81b251bd7dae61feba4a7aab98f5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af6ac744d2e0a6dd1cdbd19136dfabcb9"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xilpuf__spartan__ultrascale__plus__example_8h.html#af6ac744d2e0a6dd1cdbd19136dfabcb9">XPUF_RED_KEY_LEN</a>&#160;&#160;&#160;(<a class="el" href="xilpuf__spartan__ultrascale__plus__example_8h.html#aba0d81b251bd7dae61feba4a7aab98f5">XPUF_RED_KEY_SIZE_256</a>)</td></tr>
<tr class="memdesc:af6ac744d2e0a6dd1cdbd19136dfabcb9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Value to indicate red key length that is used during black key generation.  <a href="#af6ac744d2e0a6dd1cdbd19136dfabcb9">More...</a><br/></td></tr>
<tr class="separator:af6ac744d2e0a6dd1cdbd19136dfabcb9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aed547acdacee538b3d5edb8effdabd33"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xilpuf__spartan__ultrascale__plus__example_8h.html#aed547acdacee538b3d5edb8effdabd33">XPUF_REGISTRATION</a>&#160;&#160;&#160;0U</td></tr>
<tr class="memdesc:aed547acdacee538b3d5edb8effdabd33"><td class="mdescLeft">&#160;</td><td class="mdescRight">Value to indicate PUF registration.  <a href="#aed547acdacee538b3d5edb8effdabd33">More...</a><br/></td></tr>
<tr class="separator:aed547acdacee538b3d5edb8effdabd33"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa9fd28d7474a740dad170102dd6e8d8f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xilpuf__spartan__ultrascale__plus__example_8h.html#aa9fd28d7474a740dad170102dd6e8d8f">XPUF_REGEN_ON_DEMAND</a>&#160;&#160;&#160;1U</td></tr>
<tr class="memdesc:aa9fd28d7474a740dad170102dd6e8d8f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Value to indicate regeneration on demand.  <a href="#aa9fd28d7474a740dad170102dd6e8d8f">More...</a><br/></td></tr>
<tr class="separator:aa9fd28d7474a740dad170102dd6e8d8f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a368d441bbf6c18131c64f5a4f86a972e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xilpuf__spartan__ultrascale__plus__example_8h.html#a368d441bbf6c18131c64f5a4f86a972e">XPUF_RED_KEY_LEN_IN_BYTES</a>&#160;&#160;&#160;(32U)</td></tr>
<tr class="memdesc:a368d441bbf6c18131c64f5a4f86a972e"><td class="mdescLeft">&#160;</td><td class="mdescRight">RED key length in bytes.  <a href="#a368d441bbf6c18131c64f5a4f86a972e">More...</a><br/></td></tr>
<tr class="separator:a368d441bbf6c18131c64f5a4f86a972e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3b086131f0f55679ce2b6a243cdcfdf0"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xilpuf__spartan__ultrascale__plus__example_8h.html#a3b086131f0f55679ce2b6a243cdcfdf0">XPUF_IV</a>&#160;&#160;&#160;&quot;000000000000000000000000&quot;</td></tr>
<tr class="memdesc:a3b086131f0f55679ce2b6a243cdcfdf0"><td class="mdescLeft">&#160;</td><td class="mdescRight">IV that is used during black key generation.  <a href="#a3b086131f0f55679ce2b6a243cdcfdf0">More...</a><br/></td></tr>
<tr class="separator:a3b086131f0f55679ce2b6a243cdcfdf0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aef30dbf3d32eb628b8a376803a792078"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xilpuf__spartan__ultrascale__plus__example_8h.html#aef30dbf3d32eb628b8a376803a792078">XPUF_GENERATE_KEK_N_ID</a>&#160;&#160;&#160;(TRUE)</td></tr>
<tr class="memdesc:aef30dbf3d32eb628b8a376803a792078"><td class="mdescLeft">&#160;</td><td class="mdescRight">This will enable/disable generating black key and it is only applicable during registraion.  <a href="#aef30dbf3d32eb628b8a376803a792078">More...</a><br/></td></tr>
<tr class="separator:aef30dbf3d32eb628b8a376803a792078"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac3aef9f7b8f99f9fcf1b205eb244487e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xilpuf__spartan__ultrascale__plus__example_8h.html#ac3aef9f7b8f99f9fcf1b205eb244487e">XPUF_KEY_GENERATE_OPTION</a>&#160;&#160;&#160;(<a class="el" href="xilpuf__spartan__ultrascale__plus__example_8h.html#aed547acdacee538b3d5edb8effdabd33">XPUF_REGISTRATION</a>)</td></tr>
<tr class="memdesc:ac3aef9f7b8f99f9fcf1b205eb244487e"><td class="mdescLeft">&#160;</td><td class="mdescRight">PUF kEK generate option it can be either registration/regeneration on demand.  <a href="#ac3aef9f7b8f99f9fcf1b205eb244487e">More...</a><br/></td></tr>
<tr class="separator:ac3aef9f7b8f99f9fcf1b205eb244487e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa7a813e775b6b24ef967fa5fa5fcc3d2"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xilpuf__spartan__ultrascale__plus__example_8h.html#aa7a813e775b6b24ef967fa5fa5fcc3d2">XPUF_GLBL_VAR_FLTR_OPTION</a>&#160;&#160;&#160;(TRUE)</td></tr>
<tr class="memdesc:aa7a813e775b6b24ef967fa5fa5fcc3d2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enables/disables global variation filter during PUF registraton/regeneration.  <a href="#aa7a813e775b6b24ef967fa5fa5fcc3d2">More...</a><br/></td></tr>
<tr class="separator:aa7a813e775b6b24ef967fa5fa5fcc3d2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7515e992cca0f0f94fcb10a5e493b8d2"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xilpuf__spartan__ultrascale__plus__example_8h.html#a7515e992cca0f0f94fcb10a5e493b8d2">XPUF_WRITE_PUF_HASH_IN_EFUSE</a>&#160;&#160;&#160;(FALSE)</td></tr>
<tr class="memdesc:a7515e992cca0f0f94fcb10a5e493b8d2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write PUF hash in efuse.  <a href="#a7515e992cca0f0f94fcb10a5e493b8d2">More...</a><br/></td></tr>
<tr class="separator:a7515e992cca0f0f94fcb10a5e493b8d2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2f1085a4fcb7298e38837184937131ad"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xilpuf__spartan__ultrascale__plus__example_8h.html#a2f1085a4fcb7298e38837184937131ad">XPUF_WRITE_IN_MEM</a>&#160;&#160;&#160;(FALSE)</td></tr>
<tr class="memdesc:a2f1085a4fcb7298e38837184937131ad"><td class="mdescLeft">&#160;</td><td class="mdescRight">This will enable writing PUFHD,CHASH,AUX and black key into the memory.  <a href="#a2f1085a4fcb7298e38837184937131ad">More...</a><br/></td></tr>
<tr class="separator:a2f1085a4fcb7298e38837184937131ad"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a282aed0cf0405e7c74e8fce83c824f8a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xilpuf__spartan__ultrascale__plus__example_8h.html#a282aed0cf0405e7c74e8fce83c824f8a">XPUF_PRGM_HASH_PUF_OR_KEY</a>&#160;&#160;&#160;(TRUE)</td></tr>
<tr class="memdesc:a282aed0cf0405e7c74e8fce83c824f8a"><td class="mdescLeft">&#160;</td><td class="mdescRight">This will enable programming HASH_PUF_OR_KEY efuse when XPUF_WRITE_PUF_HASH_IN_EFUSE is TRUE.  <a href="#a282aed0cf0405e7c74e8fce83c824f8a">More...</a><br/></td></tr>
<tr class="separator:a282aed0cf0405e7c74e8fce83c824f8a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4a29bff8b0aad0c58a42aede75c8c2da"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xilpuf__spartan__ultrascale__plus__example_8h.html#a4a29bff8b0aad0c58a42aede75c8c2da">PUF_RO_SWAP</a>&#160;&#160;&#160;(0x00000000U)</td></tr>
<tr class="memdesc:a4a29bff8b0aad0c58a42aede75c8c2da"><td class="mdescLeft">&#160;</td><td class="mdescRight">PUF RO swap value.  <a href="#a4a29bff8b0aad0c58a42aede75c8c2da">More...</a><br/></td></tr>
<tr class="separator:a4a29bff8b0aad0c58a42aede75c8c2da"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8e6aedfa07bdcb7c01afad1600223422"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xilpuf__spartan__ultrascale__plus__example_8h.html#a8e6aedfa07bdcb7c01afad1600223422">XPUF_SYNDROME_DATA_WRITE_ADDR</a>&#160;&#160;&#160;(0x040BF368U)</td></tr>
<tr class="memdesc:a8e6aedfa07bdcb7c01afad1600223422"><td class="mdescLeft">&#160;</td><td class="mdescRight">PUF syndrome data write address.  <a href="#a8e6aedfa07bdcb7c01afad1600223422">More...</a><br/></td></tr>
<tr class="separator:a8e6aedfa07bdcb7c01afad1600223422"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aef1f0b30f511f2555f8ae32f01d37b3f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xilpuf__spartan__ultrascale__plus__example_8h.html#aef1f0b30f511f2555f8ae32f01d37b3f">XPUF_CHASH_DATA_WRITE_ADDR</a>&#160;&#160;&#160;(0x040BF564U)</td></tr>
<tr class="memdesc:aef1f0b30f511f2555f8ae32f01d37b3f"><td class="mdescLeft">&#160;</td><td class="mdescRight">PUF CHASH data write address.  <a href="#aef1f0b30f511f2555f8ae32f01d37b3f">More...</a><br/></td></tr>
<tr class="separator:aef1f0b30f511f2555f8ae32f01d37b3f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a734e825a117738fda7645505117ec8c3"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xilpuf__spartan__ultrascale__plus__example_8h.html#a734e825a117738fda7645505117ec8c3">XPUF_AUX_DATA_WRITE_ADDR</a>&#160;&#160;&#160;(0x040A00D0U)</td></tr>
<tr class="memdesc:a734e825a117738fda7645505117ec8c3"><td class="mdescLeft">&#160;</td><td class="mdescRight">PUF AUX data write address.  <a href="#a734e825a117738fda7645505117ec8c3">More...</a><br/></td></tr>
<tr class="separator:a734e825a117738fda7645505117ec8c3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7f69e68c12c60dd8840ec2a290757bb2"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xilpuf__spartan__ultrascale__plus__example_8h.html#a7f69e68c12c60dd8840ec2a290757bb2">XPUF_AES_BLK_KEY_WRITE_ADDR</a>&#160;&#160;&#160;(0x040A00A0U)</td></tr>
<tr class="memdesc:a7f69e68c12c60dd8840ec2a290757bb2"><td class="mdescLeft">&#160;</td><td class="mdescRight">PUF AES black key write address.  <a href="#a7f69e68c12c60dd8840ec2a290757bb2">More...</a><br/></td></tr>
<tr class="separator:a7f69e68c12c60dd8840ec2a290757bb2"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Macro Definition Documentation</h2>
<a class="anchor" id="a4a29bff8b0aad0c58a42aede75c8c2da"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define PUF_RO_SWAP&#160;&#160;&#160;(0x00000000U)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>PUF RO swap value. </p>

</div>
</div>
<a class="anchor" id="a7f69e68c12c60dd8840ec2a290757bb2"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define XPUF_AES_BLK_KEY_WRITE_ADDR&#160;&#160;&#160;(0x040A00A0U)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>PUF AES black key write address. </p>

</div>
</div>
<a class="anchor" id="a734e825a117738fda7645505117ec8c3"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define XPUF_AUX_DATA_WRITE_ADDR&#160;&#160;&#160;(0x040A00D0U)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>PUF AUX data write address. </p>

</div>
</div>
<a class="anchor" id="aef1f0b30f511f2555f8ae32f01d37b3f"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define XPUF_CHASH_DATA_WRITE_ADDR&#160;&#160;&#160;(0x040BF564U)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>PUF CHASH data write address. </p>

</div>
</div>
<a class="anchor" id="aef30dbf3d32eb628b8a376803a792078"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define XPUF_GENERATE_KEK_N_ID&#160;&#160;&#160;(TRUE)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This will enable/disable generating black key and it is only applicable during registraion. </p>

</div>
</div>
<a class="anchor" id="aa7a813e775b6b24ef967fa5fa5fcc3d2"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define XPUF_GLBL_VAR_FLTR_OPTION&#160;&#160;&#160;(TRUE)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Enables/disables global variation filter during PUF registraton/regeneration. </p>

</div>
</div>
<a class="anchor" id="a3b086131f0f55679ce2b6a243cdcfdf0"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define XPUF_IV&#160;&#160;&#160;&quot;000000000000000000000000&quot;</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>IV that is used during black key generation. </p>

</div>
</div>
<a class="anchor" id="ac3aef9f7b8f99f9fcf1b205eb244487e"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define XPUF_KEY_GENERATE_OPTION&#160;&#160;&#160;(<a class="el" href="xilpuf__spartan__ultrascale__plus__example_8h.html#aed547acdacee538b3d5edb8effdabd33">XPUF_REGISTRATION</a>)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>PUF kEK generate option it can be either registration/regeneration on demand. </p>

</div>
</div>
<a class="anchor" id="a282aed0cf0405e7c74e8fce83c824f8a"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define XPUF_PRGM_HASH_PUF_OR_KEY&#160;&#160;&#160;(TRUE)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This will enable programming HASH_PUF_OR_KEY efuse when XPUF_WRITE_PUF_HASH_IN_EFUSE is TRUE. </p>

</div>
</div>
<a class="anchor" id="a6f822848a1e2b64dc248cb92792e96c5"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define XPUF_READ_HASH_PUF_OR_KEY&#160;&#160;&#160;(FALSE)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>For reading Secure control eFUSE bits of PUF. </p>

</div>
</div>
<a class="anchor" id="a94d0604a0d7e4af7bd43aa25d69a6cda"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define XPUF_RED_KEY&#160;&#160;&#160;&quot;0000000000000000000000000000000000000000000000000000000000000000&quot;</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Red key that is encrypted using PUF KEK to form a black key. </p>

</div>
</div>
<a class="anchor" id="af6ac744d2e0a6dd1cdbd19136dfabcb9"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define XPUF_RED_KEY_LEN&#160;&#160;&#160;(<a class="el" href="xilpuf__spartan__ultrascale__plus__example_8h.html#aba0d81b251bd7dae61feba4a7aab98f5">XPUF_RED_KEY_SIZE_256</a>)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Value to indicate red key length that is used during black key generation. </p>

</div>
</div>
<a class="anchor" id="a368d441bbf6c18131c64f5a4f86a972e"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define XPUF_RED_KEY_LEN_IN_BYTES&#160;&#160;&#160;(32U)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>RED key length in bytes. </p>

</div>
</div>
<a class="anchor" id="a8c62e5450d6fd6c55be85f99ef93e91f"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define XPUF_RED_KEY_SIZE_128&#160;&#160;&#160;(0U)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Keysize 128. </p>

</div>
</div>
<a class="anchor" id="aba0d81b251bd7dae61feba4a7aab98f5"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define XPUF_RED_KEY_SIZE_256&#160;&#160;&#160;(2U)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Keysize 256. </p>

</div>
</div>
<a class="anchor" id="aa9fd28d7474a740dad170102dd6e8d8f"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define XPUF_REGEN_ON_DEMAND&#160;&#160;&#160;1U</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Value to indicate regeneration on demand. </p>

</div>
</div>
<a class="anchor" id="aed547acdacee538b3d5edb8effdabd33"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define XPUF_REGISTRATION&#160;&#160;&#160;0U</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Value to indicate PUF registration. </p>

</div>
</div>
<a class="anchor" id="a8e6aedfa07bdcb7c01afad1600223422"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define XPUF_SYNDROME_DATA_WRITE_ADDR&#160;&#160;&#160;(0x040BF368U)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>PUF syndrome data write address. </p>

</div>
</div>
<a class="anchor" id="a2f1085a4fcb7298e38837184937131ad"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define XPUF_WRITE_IN_MEM&#160;&#160;&#160;(FALSE)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This will enable writing PUFHD,CHASH,AUX and black key into the memory. </p>

</div>
</div>
<a class="anchor" id="a7515e992cca0f0f94fcb10a5e493b8d2"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define XPUF_WRITE_PUF_HASH_IN_EFUSE&#160;&#160;&#160;(FALSE)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Write PUF hash in efuse. </p>

</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
	<p class="footer">&copy; Copyright 2015-2022 Xilinx, Inc. All Rights Reserved.</p>
	<p class="footer">&copy; Copyright 2022-2023 Advanced Micro Devices, Inc. All Rights Reserved.</p>
</div>
</body>
</html>
